经典智能算法

您所在的位置:网站首页 matlab 智能算法工具箱 经典智能算法

经典智能算法

2023-12-31 12:23| 来源: 网络整理| 查看: 265

粒子群优化算法(Particle Swarm Optimization,PSO)与模拟退火算法类似,通过随机解出发,迭代找出最优解,通过适应度(评价指标)来评价解的品质。

1 基本原理

        在PSO中,,每个优化问题的潜在解,相当于解空间的一个粒子,粒子都有一个由优化函数确定的适应值(fitness),每个粒子有,位置,速度等基本属性。通过不同迭代,更新粒子的速度和位置来得到最适解,粒子在某一个位置越集中,代表该问题的解所在。

 其中X表示粒子位置,V表示粒子速度,Pid 表示个体粒子的最优位置,Pgd表示群体粒子的最优位置。

2 更新规则和流程图

 假设在D维空间中,有N个粒子组成的一个群落,其中第i个粒子表示为一个D维向量

 同理飞行速度V也是一个D维变量

第i个粒子搜索到的最优位置成为个体极值,记为

 整个群体搜索到的最优位置为

 利用以下公式 进行位置和速度的变更

Vi 中  第一部分为“惯性”反映粒子运动习惯

          第二部分为“认知”,表示粒子有向自身最优位置行走趋势

          第三部分为“社会”,表示粒子有向群体最优位置移动趋势

其中 w 叫做惯性因子,非负值,可以用以下公式进行更新或者设置为常数

最初其值较大,全局搜索能力较强。

最后其值较小,局部搜索能力较强。

C1 和 C2为学习因子,也称加速度常数,rand为[0,1]的随机数

3 整体代码

使用方法:[xm1,fv1] = PSO(@fitness,50,2,2,0.5,100,30);

设置适应度函数 

function F=fitness(x) F=0; for i=1:30 F=F+x(i).^2+x(i)-6 end end

粒子群寻优算法 

function [xm ,fv ] = PSO( fitness,N,c1,c2,w,M,D ) %% 参数 fitness为待优化的目标函数(适应度函数),N为粒子数目,c1,c2为学习因子(即各部分的贡献度,相当于加了一个权重) % w为惯性权重,M为最大迭代数,D为自变量的个数(相当于维度) %% 结果:xm 为目标函数取最小值时候的自变量,fv是目标函数的最小值 %% %初始化位置以及速度 format long; %有效数字16位 for i=1:N for j=1:D x(i,j)=randn;%随机初始化位置 v(i,j)=randn;%随机初始化速度 end end %计算每个粒子的适应度 for i=1:N p(i)=fitness(x(i,:)); y(i,:)=x(i,:); end pg=x(N,:); %pg全局最优 for i=1:(N-1) if fitness(x(i,:))


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3